package com.ming.dancing.springboot.controller;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.ming.dancing.springboot.entity.Course;

import com.ming.dancing.springboot.service.CourseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import java.security.PublicKey;
import java.util.List;

@Controller
@RequestMapping(value = "course")
public class CourseController {
    @Autowired
    CourseService courseService;


    //查询所有课程返回列表页面
    @GetMapping("/emps")
    public String list(Model model){
        List<Course> courses = courseService.findAll();
        //放在请求域中
        model.addAttribute("emps",courses);
        // thymeleaf默认就会拼串
        // classpath:/templates/xxxx.html
        return "dancer/allcourse";
    }
    //课程添加页面
    @GetMapping("/emp")
    public String toAddPage(Model model){
        //来到添加页面,查出所有的部门，在页面显示
        return "dancer/addcourse";
    }
    //课程添加
    //SpringMVC自动将请求参数和入参对象的属性进行一一绑定；要求请求参数的名字和javaBean入参的对象里面的属性名是一样的
    @PostMapping("/emp")
    public String addEmp(Course course){
        //来到员工列表页面
        courseService.save(course);
        // redirect: 表示重定向到一个地址  /代表当前项目路径
        // forward: 表示转发到一个地址
        return "redirect:/course/emps";
    }
    //查找一个课程
    @GetMapping("/emp/{id}")
    public String toEditPage(@PathVariable("id") Integer id, Model model){
        Course course = courseService.find(id);
        model.addAttribute("emp",course);
        System.out.println(course);
        //回到修改页面(add是一个修改添加二合一的页面);
        return "dancer/addcourse";
    }
    //修改
    @PutMapping("/emp")
    public String updateDancer(Course course){
        System.out.println("修改的员工数据："+course);
        courseService.update(course);
        return "redirect:/course/emps";
    }
    //删除
    @DeleteMapping("/emp/{id}")
    public String deleteDance(@PathVariable("id") Integer id)
    {
        System.out.println("删除的员工是"+id);
        courseService.delete(id);
        return "redirect:/course/emps";
    }

    //根据舞者id查询该舞者所教学的课
    @RequestMapping("/courselist/{id}")
    public String getcourselistbyid(@PathVariable("id") Integer id ,Model model)
    {
        List<Course> getcourselistbyid = courseService.getcourselistbyid(id);
        model.addAttribute("emps",getcourselistbyid);
        System.out.println(id+"hh"+getcourselistbyid);
        return "dancer/allcourse";

    }

    /**
     *
     * @param model 携带数据返回
     * @param pageSize 一页显示多少条-非必传值
     * @param pageNum 显示当前页--必传值
     * @return 前端页面
     * @Author: Zoutao
     * @Date: 2018/12/6
     */
//分页查询数据
    @GetMapping("/findcourselist")
    public String usermanage(Model model,
                             @RequestParam(required = false,defaultValue="1",value="pageNum")Integer pageNum,
                             @RequestParam(defaultValue="5",value="pageSize")Integer pageSize){

        //为了程序的严谨性，判断非空：
        if(pageNum == null){
            pageNum = 1;   //设置默认当前页
        }
        if(pageNum <= 0){
            pageNum = 1;
        }
        if(pageSize == null){
            pageSize = 5;    //设置默认每页显示的数据数
        }
        System.out.println
                ("当前页是："+pageNum+"显示条数是："+pageSize);

        //1.引入分页插件,pageNum是第几页，pageSize是每页显示多少条,默认查询总数count
        PageHelper.startPage(pageNum,pageSize);
        //2.紧跟的查询就是一个分页查询-必须紧跟.后面的其他查询不会被分页，除非再次调用PageHelper.startPage
        try {
            List<Course> courseList = courseService.findAll();
            System.out.println("分页数据："+courseList);
            //3.使用PageInfo包装查询后的结果,5是连续显示的条数,结果list类型是Page<E>
            PageInfo<Course> pageInfo = new PageInfo<Course>(courseList,pageSize);
            //4.使用model/map/modelandview等带回前端
            model.addAttribute("pageInfo",pageInfo);
        }finally {
            PageHelper.clearPage(); //清理 ThreadLocal 存储的分页参数,保证线程安全
        }
        //5.设置返回的jsp/html等前端页面
        // thymeleaf默认就会拼串classpath:/templates/xxxx.html
        return "dancer/allcoursePage";
    }
}
